今天宠物迷的小编给各位宠物饲养爱好者分享android设置进度条的宠物知识,其中也会对JAVA怎么自己绘制进度条样式(java进度条实现)进行专业的解释,如果能碰巧解决你现在面临的宠物相关问题,别忘了关注本站哦,现在我们开始吧!
package com.test;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Container;
import java.awt.Cursor;
import java.awt.Dimension;
import java****.URL;
import javax.swing.ImageIcon;
import javax.swing.JLabel;
import javax.swing.JProgressBar;
import javax.swing.JWindow;
/**
* 程序启动模拟进度条
* 配置操作:
* 1、更换url的test图片。图片的路径和.java文件一级
* 2、showFrame里,new出下一个JFrame
* 3、main方法里的new可以带到上一个JFrame
* @author Administrator
*
*/
public class ProgrammStart extends JWindow implements Runnable {
Thread splashThread; //进度条更新线程
JProgressBar progress; //进度条
public ProgrammStart() {
Container container=getContentPane(); //得到容器
setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR)); //设置光标
URL url = getClass().getResource("test.jpg"); //图片的位置
if(url != null){
container.add(new JLabel(new ImageIcon(url)),BorderLayout.CENTER); //增加图片
}
progress = new JProgressBar(1,100); //实例化进度条
progress.setStringPainted(true); //描绘文字
progress.setString("程序加载中,请稍候......"); //设置显示文字
progress.setBackground(Color.white); //设置背景色
container.add(progress,BorderLayout.SOUTH); //增加进度条到容器上
Dimension screen = getToolkit().getScreenSize(); //得到屏幕尺寸
pack(); //窗口适应组件尺寸
setLocation((screen.width-getSize().width)/2,(screen.height-getSize().height)/2); //设置窗口位置
}
public void start(){
this.toFront(); //窗口前端显示
splashThread=new Thread(this); //实例化线程
splashThread.start(); //开始运行线程
}
public void run(){
setVisible(true); //显示窗口
try {
for (int i=0;i<100;i++){
Thread.sleep(100); //线程休眠
progress.setValue(progress.getValue()+1); //设置进度条值
}
}
catch (Exception ex) {
ex.printStackTrace();
}
dispose(); //释放窗口
showFrame(); //运行主程序
}
static void showFrame(){
//实例化JFrame对象
}
public static void main(String[] args) {
new ProgrammStart().start();
}
}
一)变换前背景
先来看看progressbar的属性:
1. <ProgressBar
2. android:id="@+id/progressBar"
3. style="?android:attr/progressBarStyleHorizontal"
4. android:layout_width="match_parent"
5. android:layout_height="wrap_content"
6. android:layout_margin="5dip"
7. android:layout_toRightOf="@+id/progressBarV"
8. android:indeterminate="false"
9. android:padding="2dip"
10. android:progress="50" />
根据style="?android:attr/progressBarStyleHorizontal",我们找到源码中的style.xml
1.
2. false
3. @android:drawable/progress_horizontal
4. @android:drawable/progress_indeterminate_horizontal
5. 20dip
6. 20dip
7.
看到
@android:drawable/progress_horizontal
木有,继续发掘源码,找到drawable下面的progress_horizontal.xml,这就是我们今天的主角了:
1.
2.
3.
4.
5.
6. <gradient
7. android:startColor="#ff9d9e9d"
8. android:centerColor="#ff5a5d5a"
9. android:centerY="0.75"
10. android:endColor="#ff747674"
11. android:angle="270"
12. />
13.
14.
15.
16.
17.
18.
19.
20. <gradient
21. android:startColor="#80ffd300"
22. android:centerColor="#80ffb600"
23. android:centerY="0.75"
24. android:endColor="#a0ffcb00"
25. android:angle="270"
26. />
27.
28.
29.
30.
31.
32.
33.
34.
35. <gradient
36. android:startColor="#ffffd300"
37. android:centerColor="#ffffb600"
38. android:centerY="0.75"
39. android:endColor="#ffffcb00"
40. android:angle="270"
41. />
42.
43.
44.
45.
46.
看到android:id="@android:id/progress"木有,看到android:id="@android:id/secondaryProgress"木有
把这个文件复制到自己工程下的drawable,就可以随心所欲的修改shape的属性,渐变,圆角等等
那么怎么放一个图片进去呢,ok,新建progress_horizontal1.xml:
1.
2.
3.
4.
5.
6.
在android:drawable中指定你处理好的图片
然后回到布局中
1. <ProgressBar
2. android:id="@+id/progressBar1"
3. android:layout_width="match_parent"
4. android:layout_height="wrap_content"
5. android:layout_below="@+id/progressBar"
6. android:layout_margin="5dip"
7. android:layout_toRightOf="@+id/progressBarV"
8. android:background="@drawable/progress_bg"
9. android:indeterminate="false"
10. android:indeterminateOnly="false"
11. android:maxHeight="20dip"
12. android:minHeight="20dip"
13. android:padding="2dip"
14. android:progress="50"
15. android:progressDrawable="@drawable/progress_horizontal1" />
android:background="@drawable/progress_bg"指定背景
android:progressDrawable="@drawable/progress_horizontal1"前景使用上面的progress_horizontal1
要是还不行
你来我们群里说吧
这里是开发者互相学习交流的 有大神
让他们给你解释你的疑问 号 码look at my n a m e.....
progressbar.setMax(100); 设置最大为100
progressbar.setProgress(0); 这里就是设置进度
一)变换前背景
先来看看progressbar的属性:
1. <ProgressBar
2. android:id="@+id/progressBar"
3. style="?android:attr/progressBarStyleHorizontal"
4. android:layout_width="match_parent"
5. android:layout_height="wrap_content"
6. android:layout_margin="5dip"
7. android:layout_toRightOf="@+id/progressBarV"
8. android:indeterminate="false"
9. android:padding="2dip"
10. android:progress="50" />
根据style="?android:attr/progressBarStyleHorizontal",我们找到源码中的style.xml
1.
2. false
3. @android:drawable/progress_horizontal
4. @android:drawable/progress_indeterminate_horizontal
5. 20dip
6. 20dip
7.
看到
@android:drawable/progress_horizontal
木有,继续发掘源码,找到drawable下面的progress_horizontal.xml,这就是我们今天的主角了:
1.
2.
3.
4.
5.
6. <gradient
7. android:startColor="#ff9d9e9d"
8. android:centerColor="#ff5a5d5a"
9. android:centerY="0.75"
10. android:endColor="#ff747674"
11. android:angle="270"
12. />
13.
14.
15.
16.
17.
18.
19.
20. <gradient
21. android:startColor="#80ffd300"
22. android:centerColor="#80ffb600"
23. android:centerY="0.75"
24. android:endColor="#a0ffcb00"
25. android:angle="270"
26. />
27.
28.
29.
30.
31.
32.
33.
34.
35. <gradient
36. android:startColor="#ffffd300"
37. android:centerColor="#ffffb600"
38. android:centerY="0.75"
39. android:endColor="#ffffcb00"
40. android:angle="270"
41. />
42.
43.
44.
45.
46.
看到android:id="@android:id/progress"木有,看到android:id="@android:id/secondaryProgress"木有
把这个文件复制到自己工程下的drawable,就可以随心所欲的修改shape的属性,渐变,圆角等等
那么怎么放一个图片进去呢,ok,新建progress_horizontal1.xml:
1.
2.
3.
4.
5.
6.
在android:drawable中指定你处理好的图片
然后回到布局中
1. <ProgressBar
2. android:id="@+id/progressBar1"
3. android:layout_width="match_parent"
4. android:layout_height="wrap_content"
5. android:layout_below="@+id/progressBar"
6. android:layout_margin="5dip"
7. android:layout_toRightOf="@+id/progressBarV"
8. android:background="@drawable/progress_bg"
9. android:indeterminate="false"
10. android:indeterminateOnly="false"
11. android:maxHeight="20dip"
12. android:minHeight="20dip"
13. android:padding="2dip"
14. android:progress="50"
15. android:progressDrawable="@drawable/progress_horizontal1" />
android:background="@drawable/progress_bg"指定背景
android:progressDrawable="@drawable/progress_horizontal1"前景使用上面的progress_horizontal1
要是还不行
你来我们群里说吧
这里是开发者互相学习交流的 有大神
让他们给你解释你的疑问 号 码look at my n a m e.....
SeekBar是ProgressBar的扩展,在其基础上增加了一个可拖动的thumb(注:就是那个可拖动的图标)。用户可以触摸thumb并向左或向右拖动,再或者可以使用方向键都可以设置当前的进度等级。不建议把可以获取焦点的widget放在SeekBar的左边或右边。
SeekBar的setProgress是对Seekbar进行进度设置的方法,
通过使用seekbar.setProgress(0),可以设置成 seekbar的最小值
显示百分比需要自己计算加载的内容,以下以webView示例,webView加载网页的时候可以增加进度条:
1.从webView中获取设置
WebSettings sws = webView.getSettings();
sws.setSupportZoom(true);
sws.setBuiltInZoomControls(true);
webView.setInitialScale(25);
webView.getSettings().setUseWideViewPort(true);
2.注册setWebChromeClient事件
webView.setWebChromeClient(new WebChromeClient() {
public void onProgressChanged(WebView view, int progress) {
// Activity和Webview根据加载程度决定进度条的进度大小
// 当加载到100%的时候 进度条自动消失
//WebViewProgressActivity.this.setTitle("Loading...");
//WebViewProgressActivity.this.setProgress(progress * 100);
if (progress == 100) {
progressBar.setVisibility(View.GONE);
//WebViewProgressActivity.this.setTitle("完成");
}
}
});
3.注意在onProgressChanged中处理进度,progress就是进度值。
android自带的播放器的进度条是默认会自动隐藏的,不能设置的。除非你去改源代码。你可以下个其他的播放器,看看能不能设置为不自动隐藏。 MediaController mc = new MediaController(this); mc.setVisibility(View.INVISIBLE); videoView.setMediaController(mc); 我是实现了,可以把VideoView自带的进度条隐藏。 用MediaController应该可以实现 如果用的VideoView的话,用如下代码: MediaController mc = new MediaController(this); mc.setVisibility(View.VISIBLE); vvView.setMediaController(mc); 扩展资料: 以文件处理为例 单个文件的进度处理方法: 使用CopyFileEx进行文件复制,这个函数专门提供了一个回调函数用来处理你的进度条,详细参见MSDN。 总体进度的处理方法: 如果一批文件,首先获得文件的数量count = 文件数量 设置进条的范围为0至count,每完成一个文件,就向前进一步。 参考资料来源:百度百科-进度条
给webView设置一个webChromeClient,重写里面的onProgressChanged方法,代码如下 //pb是进度条ProgressBarwebView.setWebChromeClient(new WebChromeClient() { @Override public void onProgressChanged(WebView view, int newProgress) { pb.setProgress(newProgress); if(newProgress==100){ pb.setVisibility(View.GONE); } }});
首先解决问题一的问题:
你肯定使用了系统的 oncreateDialog 和 showdialog 方法了,所以 这个就会显示一次 第二次不显示了 , 你应该调用 dialog方法里面的 show()方法 来显示,这样每次显示那个progressbar都会在转圈
问题二:
你说下面设置了一个白色背景,但是下面还是有个框,不过我有个疑问,如果你设置为白色背景,那么你的转条默认是白色的不就看不见了吗?好了这个问题不纠结了!那个黑色的是边框导致的,去掉边框就行了
一般我们采用的是自定义dialog,也就是写一个类来继承dialog,这个时候的构造函数是这个:
public MyDialog(Context context, int theme) {
super(context, theme);
this***ntext = context;
init();
}
这个theme是什么东西呢? 就是一个style样式 如下:
<resources> <style name="dialog" parent="@android:style/Theme.Dialog"> <item name="android:windowFrame">@null</item><!--边框-- <item name="android:windowIsFloating">true</item><!--是否浮现在activity之上--
<item name="android:windowIsTranslucent">false</item><!--半透明-- <item name="android:windowNoTitle">true</item><!--无标题-- <item name="android:windowBackground">@color/transparent</item><!--背景透明-- <item name="android:backgroundDimEnabled">false</item><!--模糊-- </style></resources>
其他代码:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
Dialog dialog = new MyDialog(this, R.style.MyDialog);
android.view.WindowManager.LayoutParams pa3 = new android.view.WindowManager.LayoutParams();
pa3.height = android.view.WindowManager.LayoutParams.WRAP_CONTENT;
pa3.width = android.view.WindowManager.LayoutParams.WRAP_CONTENT;
pa3.x = 0;//x 起点
pa3.y = 0;//y起点
Window window = dialog.getWindow();
window.setAttributes(pa3);
dialog.show();
return super.onKeyDown(keyCode, event);
}
之所以android.view.WindowManager.LayoutParams我要这么写,因为LayoutParams太多了,我害怕你找半天,兄弟对你够好了吧!
要是选为精彩回答 那就谢谢你了!
android自带的播放器的进度条是默认会自动隐藏的,不能设置的。除非你去改源代码。你可以下个其他的播放器,看看能不能设置为不自动隐藏。
本文由宠物迷 百科常识栏目发布,非常欢迎各位朋友分享到个人朋友圈,但转载请说明文章出处“JAVA怎么自己绘制进度条样式”